package cn.declare.utils;

import io.jsonwebtoken.Jwt;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import javax.jws.Oneway;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * Author 葛鑫
 * 用户登录加密和失效工具
 */
public class JWTUtil {
    private static final String jwtToken = "123456Mszlu!@#$$";//定义一个密钥

    /**
     * 生成token
     * @return
     */
    public static  String createToken(Map<String,Object> claims){
        //token：由密钥和（body）用户信息 、（header）过期时间等等（可被解密，不能存放铭感信息）
        JwtBuilder jwtBuilder= Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,jwtToken)//签发算法，密钥为jwToken
                .setClaims(claims) //body 数据，要唯一，自行设置
                .setIssuedAt(new Date()) //设置 签发时间
                .setExpiration(new Date(System.currentTimeMillis()+24*60*60*60*1000));//一天的有效时间
        String token = jwtBuilder.compact();//生成token（令牌）
        return token;
    }

    /**
     * 检查token合法性进行解析
     * @param token
     * @return
     */
    public static Jwt checkToken(String token) {
        return Jwts.parser().setSigningKey(jwtToken).parse(token);
    }

}